Distributed file systems distribute files over a network. Unlike network file systems, distributed file systems do not rely on a central server to access files and thus have improved scaling and fault tolerance.
Concurrent access is one challenge in designing distributed file systems. Concurrent access occurs when two or more computers attempt to access the same file or data structure at the same time. For example, if two host computers are trying to create a file in the same directory, the hosts can garble the directory structure if the directory is not properly updated.
Various different solutions to coordinate access to data structures have been developed in an attempt to mitigate problems associated with concurrent access in distributed file systems. One solution uses locks and leases. In order to access data, a host must acquire a lock or a lease. Since only one lock or lease is granted at a time, conflicting access with another host is avoided. Other solutions include using home hosts (the file system assigns a home or owner computer to coordinate data access), using synchronization primitives available in tightly-coupled cluster file systems (hosts share communication buses, input-output devices, and/or memory), and using databases and transaction processing systems (the file system uses transactions to access data).
These prior solutions and others have shortcomings associated with concurrent access in distributed file systems. For instance, some of these solutions experience one or more of deadlocks, overloads, disruptions to data access, insufficient fault tolerance, exclusions for simultaneous access, and slow processing, to name a few examples.